package kusterordonio.interfaz;

import java.awt.Color;
import java.awt.event.KeyEvent;
import java.util.*;
import java.text.*;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

import kusterordonio.dominio.*;

public class VentanaInterconsultas extends javax.swing.JFrame {

    private SistemaCarne modelo;
    private Ninio niño;
    private FuncionesAuxiliares funcAux;
    private DefaultTableModel tabla;
    private Persona actor;
    private boolean caso;
    
    /** Creates new form VentanaInterconsultas */
    public VentanaInterconsultas() {
        initComponents();
    }

    public VentanaInterconsultas(SistemaCarne unSistema, Ninio unNiño, FuncionesAuxiliares unaFunc, Persona unActor, boolean unCaso) {
        modelo = unSistema;
        niño = unNiño;
        funcAux = unaFunc;
        tabla = new DefaultTableModel();
        actor = unActor;
        caso = unCaso;
        initComponents();
        controlGenero();
        controlCaso();
        cargarEncabezados();
        cargarTabla();
        cargarDatos();
        jBtnSalir.setMnemonic(KeyEvent.VK_S);
        jBtnConfirmar.setMnemonic(KeyEvent.VK_C);
        jDateFecha.setMaxSelectableDate(Calendar.getInstance().getTime());
        jDateFecha.setMinSelectableDate(niño.getFechaNac());
    }
    
    
    public void cargarDatos(){
        this.jLabelNombre.setText(niño.toString());
    }
    
    //setea los elementos de la ventana según el rol del actor
    public void controlCaso(){
        jDateFecha.setEnabled(caso);
        jDateFecha.setVisible(caso);
        jTxtDiagnostico.setEditable(caso);
        jTxtDiagnostico.setVisible(caso);
        jTxtEspecialidad.setEditable(caso);
        jTxtEspecialidad.setVisible(caso);
        jBtnConfirmar.setVisible(caso);
        jTextFecha.setVisible(caso);
        jTextEsp.setVisible(caso);
        jTextDiag.setVisible(caso);
        if (!caso){
            jScrollPane1.setBounds(30, 80, 720, 280);
        }
    }
    
    //Setea los labels de la ventana según el sexo del niño
    public void controlGenero(){
        if(!niño.isSexo()){
            jLabelTitular.setForeground(new java.awt.Color(255, 153, 0));
            jLabelTitulo.setForeground(new java.awt.Color(255, 153, 0));
            jTextFecha.setBackground(new java.awt.Color(255, 153, 0));
            jTextEsp.setBackground(new java.awt.Color(255, 153, 0));
            jTextDiag.setBackground(new java.awt.Color(255, 153, 0));
        }
    }
    
   //Carga los encabezados de la tabla
    public void cargarEncabezados(){
        tabla.addColumn("Fecha");
        tabla.addColumn("Edad");
        tabla.addColumn("Especialidad");
        tabla.addColumn("Diagnóstico / Tratamiento");
        tabla.addColumn("Medico");
    }
    
    public void cargarTabla(){
        if(!niño.getCarne().esVaciaInterconsultas()){
            //Despejamos la tabla para volver a cargarla
            int row = tabla.getRowCount();
            if(tabla.getRowCount() != 0){
                 while(row> 0){
                     tabla.removeRow(0);
                     row--;
                 }
            }
            ArrayList<Interconsulta> lista= niño.getCarne().getInterconsultas();
            //Cargamos la tabla
            SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
            for(int i=0; i<lista.size(); i++){
                Object[] linea = new Object[5]; 
                linea[0] = formato.format(lista.get(i).getFecha()); 
                linea[1] = funcAux.muestraEdad(lista.get(i).getEdad()); 
                linea[2] = lista.get(i).getEspecialidad();
                linea[3] = lista.get(i).getDiagTratamineto();
                linea[4] = lista.get(i).getMedico();
                tabla.addRow(linea);
            }
        }
        jTable1.setModel(tabla);
        jTable1.getColumnModel().getColumn(0).setMaxWidth(75);
        jTable1.getColumnModel().getColumn(1).setMaxWidth(80);
        jTable1.getColumnModel().getColumn(2).setMaxWidth(120);
        jTable1.getColumnModel().getColumn(3).setMaxWidth(300);
        jTable1.getColumnModel().getColumn(0).setMinWidth(75);
        jTable1.getColumnModel().getColumn(1).setMinWidth(80);
        jTable1.getColumnModel().getColumn(2).setMinWidth(120);
        jTable1.getColumnModel().getColumn(3).setMinWidth(300);
    }
    
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabelTitulo = new javax.swing.JLabel();
        jSeparator1 = new javax.swing.JSeparator();
        jTextFecha = new javax.swing.JTextField();
        jTextEsp = new javax.swing.JTextField();
        jTextDiag = new javax.swing.JTextField();
        jDateFecha = new com.toedter.calendar.JDateChooser();
        jTxtEspecialidad = new javax.swing.JTextField();
        jTxtDiagnostico = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jBtnConfirmar = new javax.swing.JButton();
        jBtnSalir = new javax.swing.JButton();
        jLabelTitular = new javax.swing.JLabel();
        jLabelNombre = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Interconsultas");
        setBounds(new java.awt.Rectangle(200, 100, 0, 0));
        setResizable(false);

        jPanel1.setLayout(null);

        jLabelTitulo.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabelTitulo.setForeground(new java.awt.Color(51, 153, 0));
        jLabelTitulo.setText("Interconsultas");
        jPanel1.add(jLabelTitulo);
        jLabelTitulo.setBounds(20, 20, 240, 20);
        jPanel1.add(jSeparator1);
        jSeparator1.setBounds(0, 50, 780, 10);

        jTextFecha.setBackground(new java.awt.Color(51, 153, 0));
        jTextFecha.setEditable(false);
        jTextFecha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jTextFecha.setForeground(new java.awt.Color(255, 255, 255));
        jTextFecha.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jTextFecha.setText("Fecha");
        jPanel1.add(jTextFecha);
        jTextFecha.setBounds(30, 70, 90, 22);

        jTextEsp.setBackground(new java.awt.Color(51, 153, 0));
        jTextEsp.setEditable(false);
        jTextEsp.setFont(new java.awt.Font("Tahoma", 1, 11));
        jTextEsp.setForeground(new java.awt.Color(255, 255, 255));
        jTextEsp.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jTextEsp.setText("Especialidad");
        jPanel1.add(jTextEsp);
        jTextEsp.setBounds(120, 70, 120, 22);

        jTextDiag.setBackground(new java.awt.Color(51, 153, 0));
        jTextDiag.setEditable(false);
        jTextDiag.setFont(new java.awt.Font("Tahoma", 1, 11));
        jTextDiag.setForeground(new java.awt.Color(255, 255, 255));
        jTextDiag.setHorizontalAlignment(javax.swing.JTextField.CENTER);
        jTextDiag.setText("Diagnóstico / tratamiento");
        jPanel1.add(jTextDiag);
        jTextDiag.setBounds(240, 70, 300, 22);

        jDateFecha.setDateFormatString("dd/MM/yyyy");
        jPanel1.add(jDateFecha);
        jDateFecha.setBounds(30, 92, 90, 22);
        jPanel1.add(jTxtEspecialidad);
        jTxtEspecialidad.setBounds(120, 92, 120, 22);
        jPanel1.add(jTxtDiagnostico);
        jTxtDiagnostico.setBounds(240, 92, 300, 22);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        jTable1.setRowHeight(20);
        jScrollPane1.setViewportView(jTable1);

        jPanel1.add(jScrollPane1);
        jScrollPane1.setBounds(30, 134, 690, 240);

        jBtnConfirmar.setText("Confirmar");
        jBtnConfirmar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnConfirmarActionPerformed(evt);
            }
        });
        jPanel1.add(jBtnConfirmar);
        jBtnConfirmar.setBounds(550, 90, 80, 23);

        jBtnSalir.setText("Salir");
        jBtnSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jBtnSalirActionPerformed(evt);
            }
        });
        jPanel1.add(jBtnSalir);
        jBtnSalir.setBounds(335, 390, 80, 22);

        jLabelTitular.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabelTitular.setForeground(new java.awt.Color(51, 153, 0));
        jLabelTitular.setText("Titular:");
        jPanel1.add(jLabelTitular);
        jLabelTitular.setBounds(270, 20, 50, 20);

        jLabelNombre.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabelNombre.setForeground(new java.awt.Color(51, 51, 51));
        jPanel1.add(jLabelNombre);
        jLabelNombre.setBounds(330, 20, 220, 20);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 757, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 424, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents
private void jBtnConfirmarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnConfirmarActionPerformed
    
    if(jDateFecha.getDate() != null && niño.controlFecha(jDateFecha.getDate())
            && !jTxtEspecialidad.getText().equals("")
            && !jTxtDiagnostico.getText().equals("")){
        Interconsulta nueva= new Interconsulta(jDateFecha.getDate(),
                niño.calculoEdad(jDateFecha.getDate()),
                jTxtEspecialidad.getText(),
                jTxtDiagnostico.getText(),
                actor);
        niño.getCarne().agregarInterconsulta(nueva);
        jTxtEspecialidad.setText("");
        jTxtDiagnostico.setText("");
        jDateFecha.setDate(null);
        cargarTabla();
    }
    else{
        if(jDateFecha.getDate() != null && !niño.controlFecha(jDateFecha.getDate()))//Fecha control posterior al nacimiento y menor o igual que hoy
            JOptionPane.showMessageDialog(null,"Ingrese fecha correcta", "Error", 2);
        if(jDateFecha.getDate() == null)
            JOptionPane.showMessageDialog(null,"Ingrese fecha correcta", "Error", 2);
        if(jTxtDiagnostico.getText().equals("")||jTxtEspecialidad.getText().equals(""))
            JOptionPane.showMessageDialog(null,"Ingrese especialidad/diagnóstico/tratamiento", "Error", 2);
   }
}//GEN-LAST:event_jBtnConfirmarActionPerformed

private void jBtnSalirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jBtnSalirActionPerformed
    this.dispose();
}//GEN-LAST:event_jBtnSalirActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jBtnConfirmar;
    private javax.swing.JButton jBtnSalir;
    private com.toedter.calendar.JDateChooser jDateFecha;
    private javax.swing.JLabel jLabelNombre;
    private javax.swing.JLabel jLabelTitular;
    private javax.swing.JLabel jLabelTitulo;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JSeparator jSeparator1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextDiag;
    private javax.swing.JTextField jTextEsp;
    private javax.swing.JTextField jTextFecha;
    private javax.swing.JTextField jTxtDiagnostico;
    private javax.swing.JTextField jTxtEspecialidad;
    // End of variables declaration//GEN-END:variables
}
